#pragma once
#include <vector>
#include "buffer.h"

namespace safe_udp
{
    class SlidingWindow
    {
    public:
        SlidingWindow();
        ~SlidingWindow();

        // 向滑动窗口添加数据缓冲区。
        int AddTobufffer(const SlidWinBuffer &buffer);

        // 存储滑动窗口下,一个一个的数据buffer
        std::vector<SlidWinBuffer> sliding_window_buffers_;
        int last_packet_sent_; // 最后发送未确认的数据包的指针（滑动窗口末指针），
        int last_acked_packet; // 最后已发送已确认的数据包的指针（滑动窗口起始指针）

        int send_base_; // 成功发送且已经确认的数据包中最小的序号
        int dup_ack_;   // 重复计数（用于快重传）
    };
}